﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Services;
using Model.Models;

namespace ClienteWeb.Controllers
{

    public class VendaController : Controller
    {
        private GerenciadorVenda gVenda;
        private GerenciadorEmpresa gEmpresa;
        private GerenciadorProduto gProduto;
        private GerenciadorItem gItem;
        
        public VendaController()
        {
            gVenda = new GerenciadorVenda();
            gEmpresa = new GerenciadorEmpresa();
            gProduto = new GerenciadorProduto();
            gItem = new GerenciadorItem();
        }
        
        public ActionResult Index()
        {
            return View(gVenda.ObterTodos());
        }

        //
        // GET: /Venda/Create

        public ActionResult Create(int Id)
        {
            ViewBag.Produtos = new SelectList( gProduto.ObterTodosByEmpresa(Id), "Id_Produto", "Descricao");
            return View();
        }

        [HttpPost]
        public ActionResult Create(VendaModel venda, IEnumerable<ItemModel> items)
        {
            if (ModelState.IsValid)
            {
                venda.Id_Cliente = 9;
                venda.Valor_Total = gVenda.valorTotal(items);
                int idVenda = gVenda.Inserir(venda,items.ToArray()[0].Id_Empresa);

                SalvarItensVenda(idVenda, items);

                return RedirectToAction("ListarEmpresas", "Cliente");
            }
            return View();
        }

        private void SalvarItensVenda(int idVenda, IEnumerable<ItemModel> items)
        {
            foreach (ItemModel item in items)
            {
                item.Id_Venda = idVenda;
                item.DataPedido = DateTime.Now;
                gItem.Inserir(item);
            }
        }


        public ViewResult AdicionarItem(string id)
        {
            ProdutoModel produto = gProduto.Obter(int.Parse(id));

            ItemModel item = new ItemModel();
            item.Id_Produto = produto.Id_Produto;
            item.descricao = produto.Descricao;
            item.Id_Empresa = produto.Id_Empresa;
            item.valor = produto.Valor;
            item.quantidade = 1;
            return View("ItemVendaRow", item);
        }

        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }

    }
}
